package com.oa.mapper;

import com.oa.pojo.Option;
import com.oa.pojo.User;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

public interface UserMapper {
    // 获取所有用户
    List<User> getAll();

    // 根据ID获取一个用户
    User getOne(@Param("userId") String userId);

    // 根据用户名获取一个用户
    User getOneByName(@Param("username") String username);

    // 根据用户ID获取该用户的角色ID
    String getRoleId(@Param("userId") String userId);

    // 根据ID获取该角色所在的部门ID
    String getDeptID(@Param("userId") String userId);

    // 根据ID获取该角色所在的部门领导（leader）对象
    User getLeaderByID(@Param("userId") String userId);

    // 新增用户
    int addUser(User user);

    // 修改部门
    int updateUser(User user);

    // 删除部门
    int delUser(@Param("userId") String userId);

    // 新增用户时添加数据到user_role
    int addUserRole(@Param("userId")String userId, @Param("roleId")String roleId, @Param("comment")String comment);

    // 修改用户时修改数据到user_role
    int updateUserRole(@Param("userId")String userId, @Param("roleId")String roleId, @Param("comment")String comment);

    // 删除用户时删除user_role中的数据
    int delUserRole(@Param("userId") String userId);


    /* 1.1、queryDeptOptions
     * 功能: 查询部门 Op 清单(Option)
     * text:deptName,val:id
     */
    List<Option> queryDeptOptions();

    /* 1.2、查询角色Op清单(Option)
     * 功能: queryRoleOptions();
     */
    List<Option> queryRoleOptions();

    /* 1.3、queryRoleOptions[先不加模糊搜索]
     * 功能: 获取用户清单
     */
    List<User> queryList(Map data);


    // 根据用户名和密码登录
    User login(@Param("username") String username, @Param("password") String password);

    // 根据用户ID获取角色ID
    String getRoleIdByUserId(@Param("userId") String userId);
}
